package ejercicio2_entregar;
import java.io.*;


/**
 * Introducir los nombres y notas (valores comprendidos entre 0 y 10) 
 * de los 25 alumnos de una clase.
 * Al finalizar el programa, se visualizará el nombre del alumno con mayor
 * calificación así como el nombre del alumno con menor calificación, y un 
 * gráfico que muestre mediante * el número de alumnos con diferentes
 * calificaciones.
 * 
 * @author →Alberto Manrique←
 */
public class Ejercicio2_entregar {

    public static void main(String[] args)throws IOException {
        // TODO code application logic here
        int nota,alum;
        int mejornota=0,peornota=10;
        String nombre,alumnomejor=null,alumnopeor=null;
        int contadorsobres=0;
        int contadornot=0;
        int contadorbien=0;
        int contadorsuf=0;
        int contadorinsuf=0;
        
      try{
        for(alum=0;alum<25;alum++)
        {//for 25 alumnos
            nota=pedirNumero("Introduce la nota del alumno → ");
            nombre=pedirNombre("Introduce el nombre del alumno: ");
            while(nombre.equals("")||nombre.equals(" "))
             {
                 System.out.println("No has introducido nada.\tIntroduce "
                         + "el nombre del alumno"); 
                 nombre=pedirNombre("Nombre del alumno → ");
             }
            
            if(nota>=0&&nota<=4)
            {//insuficiente
                 contadorinsuf++;
                 System.out.println("insu");
            }//insuficiente
            if(nota==5)
            {//suficiente
                contadorsuf++;
                System.out.println("sufi");
            }//suficiente
            if(nota==6)
            {//bien
                contadorbien++;
                System.out.println("bien");
            }//bien
            if(nota==7||nota==8)
            {//notable
                contadornot++;
                System.out.println("notable");
            }//notable
            if(nota==9||nota==10)
            {//sobresaliente
                contadorsobres++;
                System.out.println("sobresaliente");
            }//sobresaliente
            
            if(nota>mejornota)
            {
                mejornota=nota;
                alumnomejor=nombre;
            }
            if(nota<peornota)
            {
                peornota=nota;
                alumnopeor=nombre;
            }
        }//for 25 alumnos 
      }   
       catch(NumberFormatException error)//controla si no metes un numero
        {
            System.out.println("No es un número");
        }
      
        System.out.print("\nSobresaliente → ");
        astericos(contadorsobres);
        System.out.println(" ");
        
        System.out.print("Notable → ");
        astericos(contadornot);
        System.out.println(" ");
        System.out.print("Bien → ");
        astericos(contadorbien);
        System.out.println(" ");
        System.out.print("Sufuciente → ");
        astericos(contadorsuf);
        System.out.println(" ");
        System.out.print("Insuficiente → ");
        astericos(contadorinsuf);
        System.out.println("\nEl alumno con mejor calificación"
                + " es "+alumnomejor);
        System.out.println("El alumno con peor calificación es "+alumnopeor);
        System.out.println("\n\tFin del programa");
  
    }//main
     
    /**
     * Este método pide el nombre del Alumno
     * @param mensaje
     * @return nombre
     * @throws IOException 
     */
    public static String pedirNombre(String mensaje)throws IOException
    {//pedir nombre
        String nombre=null;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.print(mensaje);
        nombre=teclado.readLine();
        return nombre;
    }//pedir nombre
    
    /**
     * Este método pide la nota del Alumno que debe estar comprendida 
     * entre 0-10.
     * @param mensaje
     * @return me devuelve la nota
     * @throws IOException 
     */
    public static int pedirNumero (String mensaje)throws IOException
      {//pedir num
         int numero;
         InputStreamReader flujo=new InputStreamReader(System.in);
         BufferedReader teclado=new BufferedReader(flujo);
         System.out.print(mensaje);
         numero=Integer.parseInt(teclado.readLine());
         while(numero<0||numero>10)
         {
             System.out.println("\tERROR");
             System.out.print("Introduce una nota entre 0-10→ ");
             numero=Integer.parseInt(teclado.readLine());
         }
         return numero;
      }//pedir num
    
    /**
     * Este método se encarga de imprimir tantos asteriscos como alumnos
     * tengan una determinada calificación, es decir, por cada alumno hay
     * un asterisco.
     * @param contador 
     */
    public static void astericos(int contador)
    {
        for( int i=0;i<contador;i++)
        {
            System.out.print("*");   
        }
    }
}//class